package com.jt.aop;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

import java.util.Arrays;

@Component
@Aspect
public class RedisAOPTest {
    //公式 aop = 切入点表达式   +   通知方法
    //@Pointcut("bean(itemCatServiceImpl)")
    //@Pointcut("within(com.jt.service.*)")
    //@Pointcut("execution(* com.jt.service.*.*(..))")   //.* 当前包的一级子目录
//    @Pointcut("execution(* com.jt.service..*.*(..))")  //..* 当前包的所有的子目录

    @Pointcut("bean(itemCatServiceImpl)")
    public void pointCut(){}

    @Before("pointCut()")
    public void before(JoinPoint joinPoint){
        Object target=joinPoint.getTarget();
        Object[] args=joinPoint.getArgs();
        String className=joinPoint.getSignature().getDeclaringTypeName();
        String methodName=joinPoint.getSignature().getName();

        System.out.println("目标对象"+target);
        System.out.println("方法参数"+ Arrays.toString(args));
        System.out.println("类名称"+className);
        System.out.println("方法名称");

    }


}
